# utils.py
import jieba
from typing import Tuple


def get_multiline_input(prompt_message: str) -> str:
    """
    提示用户输入多行文本，直到输入空行为止。
    """
    print(prompt_message)
    lines = []
    while True:
        line = input()
        if not line:
            break
        lines.append(line)
    return "\n".join(lines)


def check_abnormal_answer(answer: str, question: str) -> Tuple[bool, str]:
    """
    检查学生答案是否存在异常，例如答案过短或与问题高度重复。
    """
    # 答案长度检查
    if len(answer.strip()) < 10:
        return True, "答案太短，可能没有认真作答。"

    # 答案与问题重复度检查
    question_words = set(jieba.cut(question.replace("?", "").replace("？", "").strip()))
    answer_words = set(jieba.cut(answer.strip()))

    common_words = question_words.intersection(answer_words)

    if len(common_words) / len(question_words) > 0.8:
        return True, "答案与问题内容高度重合，可能为无效回答。"

    return False, ""